import unittest

import requests
from parameterized import parameterized

from p2p.api import log
from p2p.api.api_approve_trust import ApiApproveTrust
from p2p.api.api_register_login import ApiRegisterLogin
from p2p.util import read_json


class TestApproveTrust(unittest.TestCase):
    # 初始化
    def setUp(self) -> None:
    #  获取session
        self.session=requests.session()
        # 获取ApiApproveTrust对象
        self.approve=ApiApproveTrust(self.session)
    #     调用登录成功
        ApiRegisterLogin(self.session).api_login()

    # 结束
    def tearDown(self) -> None:
        self.session.close()

    # 认证接口 测试
    def test01_approve(self):
        try:
            # 调用认证接口
            r=self.approve.api_approve()
            log.info("接口执行结果为：{}".format(r.text))

        #     断言
        #     self.assertIN("你好",r.text)
        #     log.info("断言成功")

        except Exception as e:
            # 日志
            log.error("断言失败！原因：{}".format(e))
            # 抛异常
            raise

    def test02_approve_status(self):
        try:
            # 调用认证接口
            r = self.approve.api_approve_status()
            log.info("接口执行结果为：{}".format(r.text))

            #     断言
            # self.assertIN("132", r.text)
            # log.info("断言成功")

        except Exception as e:
            # 日志
            log.error("断言失败！原因：{}".format(e))
            # 抛异常
            raise

    def test03_trust(self):
        try:
            # 调用认证接口
            r = self.approve.api_trust()
            log.info("接口执行结果为：{}".format(r.json()))

            #     断言
            # self.assertIN("form", r.text)
            # print("请求后台开户结果为：",r.json())
            log.info("断言成功")

        #     三方开户

        except Exception as e:
            # 日志
            log.error("断言失败！原因：{}".format(e))
            # 抛异常
            raise

    @parameterized.expand(read_json("approve_trust.json","img_code"))     # 参数化
    def test04_img_code(self,random,expect_code):
        try:
            # 调用认证接口
            r = self.approve.api_img_code(random)
            log.info("接口执行结果为：{}".format(r.status_code))

            #     断言
            # self.assertEqual(expect_code,r.status_code)
            log.info("断言成功")

        except Exception as e:
            # 日志
            log.error("断言失败！原因：{}".format(e))
            # 抛异常
            raise

    @parameterized.expand(read_json("approve_trust.json","recharge"))
    def test05_recharge(self,valicode,expect):
        try:
            # 调用图片验证码
            self.approve.api_img_code(123)

            # 调用认证接口
            r = self.approve.api_recharge(valicode)
            log.info("接口执行结果为：{}".format(r.json()))

            if valicode==8888:
                pass

            else:
                self.assertIn(100,r.text)

            #     断言
            # self.assertIn("form",r.text)
            # log.info("断言成功")

        #     三方充值

        except Exception as e:
            # 日志
            log.error("断言失败！原因：{}".format(e))
            # 抛异常
            raise